#ifndef xpack_meta_is_nest_struct
#define xpack_meta_is_nest_struct
#pragma push_macro("xuser")
#undef  xuser
#define xuser mixc::meta_is_nest_struct::inc
#include"define/base_type.hpp"
#include"macro/xexport.hpp"
#include"meta/origin_of.hpp"
#include"meta/is_xstruct.hpp"
#include"gc/private/gc_make_guide.hpp"
#pragma pop_macro("xuser")

namespace mixc::meta_is_nest_struct{
    // 兼容 clang-11，concept 存在异常
    template<bool is_xstruct, class type_t>
    struct meta{
        static constexpr bool result = inc::gc_make_guide<type_t>().length != 0;
    };

    template<class type_t>
    struct meta<false, type_t>{
        static constexpr bool result = false;
    };

    template<class type_t>
    concept is_nest_xstruct = meta<
        inc::is_xstruct<type_t>,
        inc::origin_of<type_t>
    >::result;
}

#endif

xexport(mixc::meta_is_nest_struct::is_nest_xstruct)